#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//int cmp_int(const void* e1, const void* e2)
//{
//    return *(int*)e1 - *(int*)e2;
//}
//int main()
//{
//    int a[] = { 1,2,3,1,9,8,4,5,4,6 };
//    int sz = sizeof(a) / sizeof(a[0]);
//    qsort(a, sz, sizeof(a[0]), cmp_int);
//    int i = 0;
//    for (i = 0; i < sz; i++)
//    {
//        printf("%d ", a[i]);
//    }
//}

//int cmp_float(const void* e1, const void* e2)
//{
//    return ((int)(*(float*)e1 - *(float*)e2));
//}
//int main()
//{
//    float f[] = { 1.2,3.4,9.8,7.6,5.5 };
//    int sz = sizeof(f) / sizeof(f[0]);
//    qsort(f, sz, sizeof(f[0]), cmp_float);
//    int i = 0;
//    for (i = 0; i < sz; i++)
//    {
//        printf("%.2f ", f[i]);
//    }
//}
//

struct Stu
{
    char name[20];
    int age;
};

int cmp_stu_by_name(const void* e1, const void* e2)
{
    return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);
}

int main()
{
    struct Stu s[3] = { {"zhangsan",35},{"lisi",25},{"wangwu",30} };
    int sz = sizeof(s) / sizeof(s[0]);
    qsort(s, sz, sizeof(s[0]), cmp_stu_by_name);
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        printf("%s\n",s[i].name);
    }
}


